package modelo.pozo;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

import modelo.propiedad.Propiedad;

@Entity
@Table(name="pozo_produccion")
public class PozoProduccion extends Pozo{

	private boolean operativo;
	private boolean conPiezometro;
	private String descripcionEstado;
	private Calendar fechaUltimaEvaluacion;
	private Propiedad ubicacion;
	private List<Caudal> listaCaudalMedido;
	private List<Explotacion> listaExplotacion;
	private List<ActividadAdministrativa> listaActividad;
	private List<CondicionPozo> listaCondicion;
	private List<MedicionCalidad> listaCalidad;
	private List<Equipo> listaEquipo;
	
	public boolean isOperativo() {
		return operativo;
	}
	public void setOperativo(boolean operativo) {
		this.operativo = operativo;
	}
	public boolean isConPiezometro() {
		return conPiezometro;
	}
	public void setConPiezometro(boolean conPiezometro) {
		this.conPiezometro = conPiezometro;
	}
	
	public String getDescripcionEstado() {
		return descripcionEstado;
	}
	public void setDescripcionEstado(String descripcionEstado) {
		this.descripcionEstado = descripcionEstado;
	}
	public Calendar getFechaUltimaEvaluacion() {
		return fechaUltimaEvaluacion;
	}
	public void setFechaUltimaEvaluacion(Calendar fechaUltimaEvaluacion) {
		this.fechaUltimaEvaluacion = fechaUltimaEvaluacion;
	}
	@OneToMany(mappedBy = "pozo")
	@Cascade({CascadeType.ALL})
	public List<Caudal> getListaCaudalMedido() {
		return listaCaudalMedido;
	}
	public void setListaCaudalMedido(List<Caudal> listaCaudalMedido) {
		this.listaCaudalMedido = listaCaudalMedido;
	}
	public void inicializarCaudal(){
		listaCaudalMedido = new ArrayList<Caudal>();
	}
	public void agregarCaudalMedido(Caudal caudal){
		listaCaudalMedido.add(caudal);
	}
	@OneToMany(mappedBy = "pozo")
	@Cascade({CascadeType.ALL})
	public List<Explotacion> getListaExplotacion() {
		return listaExplotacion;
	}
	public void setListaExplotacion(List<Explotacion> listaExplotacion) {
		this.listaExplotacion = listaExplotacion;
	}
	@OneToMany(mappedBy = "pozo")
	@Cascade({CascadeType.ALL})
	public List<ActividadAdministrativa> getListaActividad() {
		return listaActividad;
	}
	public void setListaActividad(List<ActividadAdministrativa> listaActividad) {
		this.listaActividad = listaActividad;
	}
	public void inicializarListaActividadAdministrativa(){
		listaActividad = new ArrayList<ActividadAdministrativa>();
	}
	public void agregarActividad(ActividadAdministrativa actividad) {
		listaActividad.add(actividad);
	}
	
	@ManyToOne
	public Propiedad getUbicacion() {
		return ubicacion;
	}
	public void setUbicacion(Propiedad ubicacion) {
		this.ubicacion = ubicacion;
	}
	@OneToMany(mappedBy = "pozo")
	@Cascade({CascadeType.ALL})
	public List<MedicionCalidad> getListaCalidad() {
		return listaCalidad;
	}
	public void setListaCalidad(List<MedicionCalidad> listaCalidad) {
		this.listaCalidad = listaCalidad;
	}
	public void inicializarListaCalidad(){
		listaCalidad = new ArrayList<MedicionCalidad>();
	}
	public void agregarMedicionCalidad(MedicionCalidad medicion){
		listaCalidad.add(medicion);
	}
	@OneToMany(mappedBy = "pozo")
	@Cascade({CascadeType.ALL})
	public List<Equipo> getListaEquipo() {
		return listaEquipo;
	}
	public void setListaEquipo(List<Equipo> listaEquipo) {
		this.listaEquipo = listaEquipo;
	}
	public void inicializarListaEquipo(){
		listaEquipo= new ArrayList<Equipo>();
	}
	public void agregarEquipo(Equipo equipo){
		listaEquipo.add(equipo);
	}
	@OneToMany(mappedBy = "pozo")
	@Cascade({CascadeType.ALL})
	public List<CondicionPozo> getListaCondicion() {
		return listaCondicion;
	}
	public void setListaCondicion(List<CondicionPozo> listaCondicion) {
		this.listaCondicion = listaCondicion;
	}
	public void inicializarCondicion(){
		listaCondicion = new ArrayList<CondicionPozo>();
	}
	public void agregarCondicion(CondicionPozo condicion){
		listaCondicion.add(condicion);
	}
	public void inicializarPozo(){
		inicializarCaudal();
		inicializarCondicion();
		inicializarListaEquipo();
		inicializarListaCalidad();
	}
	
	
}
